//
//  ChatViewController.h
//  ChatDemo-UI3.0
//
//  Created by dhc on 15/6/26.
//  Copyright (c) 2015年 easemob.com. All rights reserved.
//
#import "EaseMessageViewController.h"
#import "RM_MessageModel.h"
#import "RomensSDK/BaseController.h"
#import "RM_BaseComponents.h"
#define KNOTIFICATIONNAME_DELETEALLMESSAGE @"RemoveAllMessages"
@class ChatViewController;
@protocol IM_JumpToChatControllerDelegate <NSObject>
@optional
/**
 跳转到自定义的聊天界面。
 
 @param chatter 聊天对象
 @param type 聊天类型
 */
- (void)IM_jumpToChatViewControllerWithChatter:(NSString *)chatter
                           chatType:(RM_ChatType)type;

/**
 获得一个ChatViewController

 @param chatter 聊天对象
 @param type 聊天类型
 @return 返回一个ChatViewController
 */
- (ChatViewController *)IM_chatViewControllerWithChatter:(NSString *)chatter
                                                chatType:(RM_ChatType)type;

@end

@class ChatViewController;
@protocol IM_ChatDelegate <NSObject>

//聊天界面
/**
 获取消息自定义cell
 
 @param tableView 当前消息视图的tableView
 @param messageModel 消息模型
 @return 用户根据messageModel判断是否显示自定义cell,返回nil显示默认cell,否则显示用户自定义cell
 */
- (UITableViewCell *)IM_messageViewController:(UITableView *)tableView
                          cellForMessageModel:(RM_MessageModel *)messageModel;

/**
 用户根据messageModel判断,是否自定义显示cell的高度
 
 @param viewController 当前消息视图
 @param messageModel 消息模型
 @param cellWidth 视图宽度
 @return 获取消息cell高度
 */
- (CGFloat)IM_messageViewController:(ChatViewController *)viewController
              heightForMessageModel:(RM_MessageModel *)messageModel
                      withCellWidth:(CGFloat)cellWidth;
@optional
/**
 选中消息的回调,用户可以自定义处理
 
 @param viewController 当前消息视图
 @param messageModel 消息模型
 @return YES:自定义点击事件／NO：无点击事件
 */
- (BOOL)IM_messageViewController:(ChatViewController *)viewController
           didSelectMessageModel:(RM_MessageModel *)messageModel;

- (void)IM_showMessageViewController:(BaseController *)viewController
                             chatter:(NSString *)chatter
                            chatType:(RM_ChatType)type;
@optional
/**
 自定义长按气泡弹出的选项：(默认:删除和拷贝)

 @param viewController 当前消息视图
 @param messageType 消息类型
 @return 返回按钮数组(类型UIMenuItem)
 */
- (NSArray *)IM_messageViewController:(ChatViewController *)viewController
                        messageType:(RM_MessageBodyType)messageType;
@end

@interface ChatViewController:EaseMessageViewController

@property (nonatomic,strong) id<IM_ChatDelegate> chatDelegate;

@property (strong ,nonatomic) EaseMessageModel *messageModel;//用于处理转发时的消息传递

/**
 是否自定义title，设置title
 */
@property (assign,nonatomic) BOOL isCutomTitle;


- (void)networkChanged:(EMConnectionState)connectionState;

/**
 假发送消息
 
 @param text 文字
 */
- (void)sendCallMsg:(NSString *)text;

/**
 初始化导航栏上的按钮
 */
- (void)_setupLeftBarButtonItem;
- (void)_setupRightBarButtonItem;

/**
 展示群组详情
 */
- (void)showGroupDetailAction;
//气泡长按后，按钮自定义
- (void)deleteMenuAction:(id)sender;//删除

- (void)copyMenuAction:(id)sender;//拷贝复制

/**
 用来发送假发送消息，以查看自定义cell的效果。

 @param ext ext:用来标识需要显示的cell(气泡),相当于identifier
 */
- (void)unreallySendMsg:(NSString *)ext;
@end
